﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Worktool.CODE_Chris.SQL_DATA;

namespace Worktool.CODE_Chris.DataSourceHelpers
{
    public class DeliveryChainHelper
    {
        private DeliveryChain parent;
        private GeneralHelper helper;
        private SQL sql;

        private DataGridView gridView1, gridView2, gridView3, gridView4;

        private SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter();
        private SqlDataAdapter sqlDataAdapter1a = new SqlDataAdapter();
        private SqlDataAdapter sqlDataAdapter2 = new SqlDataAdapter();
        private SqlDataAdapter sqlDataAdapter3 = new SqlDataAdapter();
        private SqlDataAdapter sqlDataAdapter4 = new SqlDataAdapter();

        private BindingSource bindingSource1 = new BindingSource();
        private BindingSource bindingSource2 = new BindingSource();
        private BindingSource bindingSource3 = new BindingSource();
        private BindingSource bindingSource4 = new BindingSource();

        private DataTable dataTable1, dataTable2, dataTable3, dataTable4;

        private String select1, select2, select3, select4;
        private String update1, update1a, update2, update3, update4;

        private Boolean isPaste = false;
        private int countPasteError = 0;

        public DeliveryChainHelper(DataGridView gridView1, DataGridView gridView2, DataGridView gridView3, DataGridView gridView4, DeliveryChain parent)
        {
            this.parent = parent;
            this.gridView1 = gridView1;
            this.gridView2 = gridView2;
            this.gridView3 = gridView3;
            this.gridView4 = gridView4;
            init();
        }

        private void init()
        {
            sql = new SQL();
            helper = new GeneralHelper();

            populateSQLStrings();
        }

        #region Methoden für gridView1 (Hauptmaske)
        public void getData1()
        {
            try
            {
                gridView1.DataSource = bindingSource1;

                //DataAdapter für MaterialDetailExtended
                sqlDataAdapter1 = new SqlDataAdapter(select1, Login.connection);
                sqlDataAdapter1.UpdateCommand = new SqlCommand(update1, new SqlConnection(Login.connection));

                //Neu zu schreibende Parameter
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@materialStatus", SqlDbType.NVarChar, 50, "Status");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@bestellFreigabe", SqlDbType.Date, 10, "bestellFreigabe");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userBestellFreigabe", SqlDbType.NVarChar, 50, "userBestellFreigabe");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@bestellung", SqlDbType.Date, 10, "Bestelltermin");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userBestellung", SqlDbType.NVarChar, 50, "userBestellung");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@bestaetigterLiefertermin", SqlDbType.Date, 10, "bestaetigterLiefertermin");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userbestaetigterLiefertermin", SqlDbType.NVarChar, 50, "userbestaetigterLiefertermin");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@wareneingang", SqlDbType.Date, 10, "Wareneingang ASC");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userWareneingang", SqlDbType.NVarChar, 50, "userWareneingang");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@wareLieferSollHH", SqlDbType.Date, 10, "Soll Bereitstellung HH");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userWareLieferSollHH", SqlDbType.NVarChar, 50, "userWareLieferSollHH");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@wareLieferIstHH", SqlDbType.Date, 10, "Ist Bereitstellung HH");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userWareLieferIstHH", SqlDbType.NVarChar, 50, "userWareLieferIstHH");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@lieferungWerftIst", SqlDbType.Date, 10, "Liefertermin an Werft");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userlieferungWerftIst", SqlDbType.NVarChar, 50, "userlieferungWerftIst");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@lieferungSchiffSoll", SqlDbType.Date, 10, "Soll Bereitstellung Schiff");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@userLieferungSchiffSoll", SqlDbType.NVarChar, 50, "userLieferungSchiffSoll");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@versandArtWerft", SqlDbType.NVarChar, 50, "Versandart");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@packstueck", SqlDbType.NVarChar, 50, "Packstück");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@lieferscheinNummer", SqlDbType.NVarChar, 50, "Lieferschein");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@laufendeNummerAuftrag", SqlDbType.NVarChar, 50, "laufende Nummer Auftrag");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@auftragsNummer", SqlDbType.NVarChar, 50, "Auftragsnummer");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@remarks", SqlDbType.NVarChar, 0, "Anmerkungen");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@empfangsStelleWerft", SqlDbType.NVarChar, 50, "Empfänger Werft");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@lagerOrtWerft", SqlDbType.NVarChar, 50, "Lagerort");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@auftragsJahr", SqlDbType.NVarChar, 50, "Auftragsjahr");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@kostenStelleMW", SqlDbType.NVarChar, 50, "Kostenstelle MW");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@bedarfMW", SqlDbType.NVarChar, 50, "Bedarf MW");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@istVeredelungsArtikel", SqlDbType.Bit, 1, "Veredelung");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@istVeredelt", SqlDbType.Bit, 1, "istVeredelt");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@veredelungsSchritt", SqlDbType.NVarChar, 50, "veredelungsSchritt");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@istBestellt", SqlDbType.Bit, 1, "IstBestellt");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@Kommissioniert", SqlDbType.Bit, 1, "Kommissioniert");
                sqlDataAdapter1.UpdateCommand.Parameters.Add("@ID_MaterialDetailExtended", SqlDbType.Int, 10, "ID_MaterialDetailExtended");

                //Daten aus der Originalquelle
                SqlParameter parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_materialStatus", SqlDbType.NVarChar, 50, "Status");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_bestellFreigabe", SqlDbType.Date, 10, "bestellFreigabe");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userBestellFreigabe", SqlDbType.NVarChar, 50, "userBestellFreigabe");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_bestellung", SqlDbType.Date, 10, "Bestelltermin");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userBestellung", SqlDbType.NVarChar, 50, "userBestellung");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_bestaetigterLiefertermin", SqlDbType.Date, 10, "bestaetigterLiefertermin");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userbestaetigterLiefertermin", SqlDbType.NVarChar, 50, "userbestaetigterLiefertermin");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_wareneingang", SqlDbType.Date, 10, "Wareneingang ASC");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userWareneingang", SqlDbType.NVarChar, 50, "userWareneingang");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_wareLieferSollHH", SqlDbType.Date, 10, "Soll Bereitstellung HH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userWareLieferSollHH", SqlDbType.NVarChar, 50, "userWareLieferSollHH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_wareLieferIstHH", SqlDbType.Date, 10, "Ist Bereitstellung HH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userWareLieferIstHH", SqlDbType.NVarChar, 50, "userWareLieferIstHH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_lieferungWerftIst", SqlDbType.Date, 10, "Liefertermin an Werft");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userlieferungWerftIst", SqlDbType.NVarChar, 50, "userlieferungWerftIst");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_lieferungSchiffSoll", SqlDbType.Date, 10, "Soll Bereitstellung Schiff");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_userLieferungSchiffSoll", SqlDbType.NVarChar, 50, "userLieferungSchiffSoll");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_versandArtWerft", SqlDbType.NVarChar, 50, "Versandart");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_packstueck", SqlDbType.NVarChar, 50, "Packstück");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_lieferscheinNummer", SqlDbType.NVarChar, 50, "Lieferschein");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_laufendeNummerAuftrag", SqlDbType.NVarChar, 50, "laufende Nummer Auftrag");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_auftragsNummer", SqlDbType.NVarChar, 50, "Auftragsnummer");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_remarks", SqlDbType.NVarChar, 0, "Anmerkungen");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_empfangsStelleWerft", SqlDbType.NVarChar, 50, "Empfänger Werft");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_lagerOrtWerft", SqlDbType.NVarChar, 50, "Lagerort");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_auftragsJahr", SqlDbType.NVarChar, 50, "Auftragsjahr");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_kostenStelleMW", SqlDbType.NVarChar, 50, "Kostenstelle MW");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_bedarfMW", SqlDbType.NVarChar, 50, "Bedarf MW");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_istVeredelungsArtikel", SqlDbType.Bit, 1, "Veredelung");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_istVeredelt", SqlDbType.Bit, 1, "istVeredelt");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_veredelungsSchritt", SqlDbType.NVarChar, 50, "veredelungsSchritt");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_istBestellt", SqlDbType.Bit, 1, "IstBestellt");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@Original_Kommissioniert", SqlDbType.Bit, 1, "Kommissioniert");
                parameter.SourceVersion = DataRowVersion.Original;

                //Check auf Null-Werte
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_materialStatus", SqlDbType.Int, 50, "Status");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_bestellFreigabe", SqlDbType.Int, 10, "bestellFreigabe");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userBestellFreigabe", SqlDbType.Int, 50, "userBestellFreigabe");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_bestellung", SqlDbType.Int, 10, "Bestelltermin");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userBestellung", SqlDbType.Int, 50, "userBestellung");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_bestaetigterLiefertermin", SqlDbType.Int, 10, "bestaetigterLiefertermin");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userbestaetigterLiefertermin", SqlDbType.Int, 50, "userbestaetigterLiefertermin");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_wareneingang", SqlDbType.Int, 10, "Wareneingang ASC");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userWareneingang", SqlDbType.Int, 50, "userWareneingang");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_wareLieferSollHH", SqlDbType.Int, 10, "Soll Bereitstellung HH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userWareLieferSollHH", SqlDbType.Int, 50, "userWareLieferSollHH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_wareLieferIstHH", SqlDbType.Int, 10, "Ist Bereitstellung HH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userWareLieferIstHH", SqlDbType.Int, 50, "userWareLieferIstHH");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_lieferungWerftIst", SqlDbType.Int, 10, "Liefertermin an Werft");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userlieferungWerftIst", SqlDbType.Int, 50, "userlieferungWerftIst");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_lieferungSchiffSoll", SqlDbType.Int, 10, "Soll Bereitstellung Schiff");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_userLieferungSchiffSoll", SqlDbType.Int, 50, "userLieferungSchiffSoll");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_versandArtWerft", SqlDbType.Int, 50, "Versandart");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_packstueck", SqlDbType.Int, 50, "Packstück");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_lieferscheinNummer", SqlDbType.Int, 50, "Lieferschein");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_laufendeNummerAuftrag", SqlDbType.Int, 50, "laufende Nummer Auftrag");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_auftragsNummer", SqlDbType.Int, 50, "Auftragsnummer");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_remarks", SqlDbType.Int, 0, "Anmerkungen");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_empfangsStelleWerft", SqlDbType.Int, 50, "Empfänger Werft");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_lagerOrtWerft", SqlDbType.Int, 50, "Lagerort");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_auftragsJahr", SqlDbType.Int, 50, "Auftragsjahr");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_kostenStelleMW", SqlDbType.Int, 50, "Kostenstelle MW");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_bedarfMW", SqlDbType.Int, 50, "Bedarf MW");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_istVeredelungsArtikel", SqlDbType.Int, 1, "Veredelung");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_istVeredelt", SqlDbType.Int, 1, "istVeredelt");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_veredelungsSchritt", SqlDbType.Int, 50, "veredelungsSchritt");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_istBestellt", SqlDbType.Int, 1, "IstBestellt");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;
                parameter = sqlDataAdapter1.UpdateCommand.Parameters.Add("@IsNull_Kommissioniert", SqlDbType.Int, 1, "Kommissioniert");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;

                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(sqlDataAdapter1);


                //DataAdapter für TOTAL_materialDetail
                sqlDataAdapter1a = new SqlDataAdapter(select1, Login.connection);
                sqlDataAdapter1a.UpdateCommand = new SqlCommand(update1a, new SqlConnection(Login.connection));

                //Neu zu schreibende Parameter
                sqlDataAdapter1a.UpdateCommand.Parameters.Add("@VirtuellePackNr", SqlDbType.NVarChar, 255, "Virtuelle Pack Nr.");

                //Daten aus der Originalquelle
                parameter = sqlDataAdapter1a.UpdateCommand.Parameters.Add("@Original_ID_MaterialDetail", SqlDbType.Int, 50, "ID_MaterialDetail");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter = sqlDataAdapter1a.UpdateCommand.Parameters.Add("@Original_VirtuellePackNr", SqlDbType.NVarChar, 255, "Virtuelle Pack Nr.");
                parameter.SourceVersion = DataRowVersion.Original;

                //Check auf Null-Werte
                parameter = sqlDataAdapter1a.UpdateCommand.Parameters.Add("@IsNull_VirtuellePackNr", SqlDbType.Int, 1, "Virtuelle Pack Nr.");
                parameter.SourceVersion = DataRowVersion.Original;
                parameter.SourceColumnNullMapping = true;

                SqlCommandBuilder commandBuildera = new SqlCommandBuilder(sqlDataAdapter1a);

                // Populate a new data table and bind it to the BindingSource.
                dataTable1 = new DataTable();
                dataTable1.Locale = System.Globalization.CultureInfo.InvariantCulture;
                sqlDataAdapter1.Fill(dataTable1);
                bindingSource1.DataSource = dataTable1;

                gridView1.AutoGenerateColumns = false;

                //Combobox Spalten einbauen
                gridView1.Columns.Remove("Lagerort");
                gridView1.Columns.Remove("Versandart");
                addComboBoxColumns1();

                //Zellennachbearbeitung
                setFixedColumns1();
                setHiddenColumns1();
                setDisabledColumns1();
                setColumnWidths1();

                //Eventhandler setzen
                gridView1.CellFormatting -= new DataGridViewCellFormattingEventHandler(this.gridView1_CellFormatting);
                gridView1.CellClick -= new DataGridViewCellEventHandler(this.gridView1_CellClick);
                gridView1.CellMouseDown -= new DataGridViewCellMouseEventHandler(this.gridView1_CellMouseDown);
                gridView1.CellEndEdit -= new DataGridViewCellEventHandler(this.gridView1_CellEndEdit);
                gridView1.CellParsing -= new DataGridViewCellParsingEventHandler(this.gridView1_CellParsing);
                gridView1.CellValidating -= new DataGridViewCellValidatingEventHandler(this.gridView1_CellValidating);
                gridView1.CellMouseClick -= new DataGridViewCellMouseEventHandler(this.gridView1_CellMouseClick);

                gridView1.CellFormatting += new DataGridViewCellFormattingEventHandler(this.gridView1_CellFormatting);
                gridView1.CellClick += new DataGridViewCellEventHandler(this.gridView1_CellClick);
                gridView1.CellMouseDown += new DataGridViewCellMouseEventHandler(this.gridView1_CellMouseDown);
                gridView1.CellEndEdit += new DataGridViewCellEventHandler(this.gridView1_CellEndEdit);
                gridView1.CellParsing += new DataGridViewCellParsingEventHandler(this.gridView1_CellParsing);
                gridView1.CellValidating += new DataGridViewCellValidatingEventHandler(this.gridView1_CellValidating);
                gridView1.CellMouseClick += new DataGridViewCellMouseEventHandler(this.gridView1_CellMouseClick);
            }
            catch (Exception e)
            {
                sql.log("FEHLER", e, this.ToString() + ":" + System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
        }

        public void addComboBoxColumns1()
        {
            //Wird beim Reload der Daten benötigt
            for (int a = 0; a < gridView1.Columns.Count; a++)
            {
                gridView1.Columns[a].Frozen = false;
            }

            //Wird beim Reload der Daten benötigt
            if (gridView1.Columns.Contains("Fertigungsauftrag"))
            {
                gridView1.Columns.Remove("Fertigungsauftrag");
            }

            //Fertigungsauftrag
            DataGridViewCheckBoxColumn fertigung = new DataGridViewCheckBoxColumn();
            fertigung.Name = "Fertigungsauftrag";
            fertigung.HeaderText = "Fertigungsauftrag";
            gridView1.Columns.Insert(0, fertigung);
            gridView1.Columns["Fertigungsauftrag"].DisplayIndex = 8;

            //Versandart HH -> MW
            DataGridViewComboBoxColumn columnVersandart;
            columnVersandart = helper.createComboBoxColumn("Versandart");
            columnVersandart.DataSource = helper.populate("SELECT ID, LTRIM(RTRIM(Versandart)) AS Versandart FROM tbl_fertigungsauftrag_versandartWerft");
            columnVersandart.ValueMember = "Versandart";
            columnVersandart.DisplayMember = "Versandart";
            columnVersandart.HeaderText = "Versandart";
            columnVersandart.Name = "Versandart";
            columnVersandart.MaxDropDownItems = 50;
            columnVersandart.SortMode = DataGridViewColumnSortMode.Automatic;
            gridView1.Columns.Insert(0, columnVersandart);
            gridView1.Columns["Versandart"].DisplayIndex = 29;

            //Lagerort
            DataGridViewComboBoxColumn columnLagerort;
            columnLagerort = helper.createComboBoxColumn("Lagerort");
            columnLagerort.DataSource = helper.populate("SELECT ID, LTRIM(RTRIM(Lagerort)) AS Lagerort FROM tbl_fertigungsauftrag_lagerort");
            columnLagerort.ValueMember = "Lagerort";
            columnLagerort.DisplayMember = "Lagerort";
            columnLagerort.HeaderText = "Lagerort";
            columnLagerort.Name = "Lagerort";
            columnLagerort.MaxDropDownItems = 50;
            columnLagerort.SortMode = DataGridViewColumnSortMode.Automatic;
            gridView1.Columns.Insert(0, columnLagerort);
            gridView1.Columns["Lagerort"].DisplayIndex = 33;
        }

        private void setColumnWidths1()
        {
            try
            {
                gridView1.Columns["Kommissioniert"].Width = 80;
                gridView1.Columns["Manufacturer"].Width = 95;
                gridView1.Columns["Model"].Width = 61;
                gridView1.Columns["Venue"].Width = 63;
                gridView1.Columns["Positions_ID"].Width = 91;
                gridView1.Columns["JLM"].Width = 55;
                gridView1.Columns["Zoll"].Width = 50;
                gridView1.Columns["Status"].Width = 65;
                gridView1.Columns["Fertigungsauftrag"].Width = 100;
                gridView1.Columns["Veredelung"].Width = 60;
                gridView1.Columns["veredelungsSchritt"].Width = 100;
                gridView1.Columns["istVeredelt"].Width = 60;
                gridView1.Columns["Anmerkungen"].Width = 98;
                gridView1.Columns["bestellFreigabe"].Width = 100;
                gridView1.Columns["IstBestellt"].Width = 60;
                gridView1.Columns["userBestellFreigabe"].Width = 124;
                gridView1.Columns["Bestelltermin"].Width = 91;
                gridView1.Columns["userBestellung"].Width = 101;
                gridView1.Columns["bestaetigterLiefertermin"].Width = 126;
                gridView1.Columns["userbestaetigterLiefertermin"].Width = 161;
                gridView1.Columns["Wareneingang ASC"].Width = 115;
                gridView1.Columns["userWareneingang"].Width = 100;
                gridView1.Columns["Soll Bereitstellung HH"].Width = 123;
                gridView1.Columns["userWareLieferSollHH"].Width = 137;
                gridView1.Columns["Ist Bereitstellung HH"].Width = 117;
                gridView1.Columns["userWareLieferIstHH"].Width = 100;
                gridView1.Columns["Liefertermin an Werft"].Width = 96;
                gridView1.Columns["userlieferungWerftIst"].Width = 129;
                gridView1.Columns["Soll Bereitstellung Schiff"].Width = 132;
                gridView1.Columns["userLieferungSchiffSoll"].Width = 140;
                gridView1.Columns["Versandart"].Width = 120;
                gridView1.Columns["Virtuelle Pack Nr."].Width = 100;
                gridView1.Columns["Packstück"].Width = 83;
                gridView1.Columns["Empfänger Werft"].Width = 103;
                gridView1.Columns["Lagerort"].Width = 71;
                gridView1.Columns["Lieferschein"].Width = 89;
                gridView1.Columns["laufende Nummer Auftrag"].Width = 108;
                gridView1.Columns["Auftragsjahr"].Width = 88;
                gridView1.Columns["Auftragsnummer"].Width = 108;
                gridView1.Columns["Kostenstelle MW"].Width = 103;
                gridView1.Columns["Bedarf MW"].Width = 79;
                gridView1.Columns["PpU"].Width = 100;
                gridView1.Columns["Installationsstatus"].Width = 100;
                gridView1.Columns["Technische_Ausprägung_1"].Width = 100;
                gridView1.Columns["Technische_Ausprägung_2"].Width = 100;
                gridView1.Columns["Technische_Ausprägung_3"].Width = 100;
                gridView1.Columns["ID_MaterialDetailExtended"].Width = 158;
                gridView1.Columns["ID_MaterialDetail"].Width = 113;
            }
            catch (Exception e)
            {

            }

        }

        private void setDisabledColumns1()
        {
            try
            {
                gridView1.Columns["Kommissioniert"].ReadOnly = true;
                gridView1.Columns["Manufacturer"].ReadOnly = true;
                gridView1.Columns["Model"].ReadOnly = true;
                gridView1.Columns["Venue"].ReadOnly = true;
                gridView1.Columns["Positions_ID"].ReadOnly = true;
                gridView1.Columns["JLM"].ReadOnly = true;
                gridView1.Columns["Zoll"].ReadOnly = true;
                gridView1.Columns["Status"].ReadOnly = true;
                gridView1.Columns["bestellFreigabe"].ReadOnly = true;
                gridView1.Columns["IstBestellt"].ReadOnly = true;
                gridView1.Columns["PpU"].ReadOnly = true;
                gridView1.Columns["Installationsstatus"].ReadOnly = true;
                gridView1.Columns["Technische_Ausprägung_1"].ReadOnly = true;
                gridView1.Columns["Technische_Ausprägung_2"].ReadOnly = true;
                gridView1.Columns["Technische_Ausprägung_3"].ReadOnly = true;
                //gridView1.Columns["Virtuelle Pack Nr"].ReadOnly = true;
            }
            catch (Exception e)
            {

            }
        }

        private void setFixedColumns1()
        {
            try
            {
                gridView1.Columns["Manufacturer"].Frozen = true;
                gridView1.Columns["Model"].Frozen = true;
                gridView1.Columns["Venue"].Frozen = true;
                gridView1.Columns["Positions_ID"].Frozen = true;
                gridView1.Columns["JLM"].Frozen = true;
                gridView1.Columns["Zoll"].Frozen = true;
                gridView1.Columns["Status"].Frozen = true;
                gridView1.Columns["Fertigungsauftrag"].Frozen = true;
                gridView1.Columns["Veredelung"].Frozen = true;
                gridView1.Columns["veredelungsSchritt"].Frozen = true;
                gridView1.Columns["istVeredelt"].Frozen = true;
                gridView1.Columns["Anmerkungen"].Frozen = true;
            }
            catch (Exception e)
            {

            }
        }

        private void setHiddenColumns1()
        {
            try
            {
                gridView1.Columns["ID_MaterialDetailExtended"].Visible = false;
                gridView1.Columns["ID_MaterialDetail"].Visible = false;
                gridView1.Columns["Empfänger Werft"].Visible = false;
                //gridView1.Columns["Bestelltermin"].Visible = false;
                gridView1.Columns["userBestellung"].Visible = false;
                gridView1.Columns["userbestaetigterLiefertermin"].Visible = false;
                gridView1.Columns["userWareLieferSollHH"].Visible = false;
                gridView1.Columns["userWareLieferIstHH"].Visible = false;
                gridView1.Columns["userlieferungWerftIst"].Visible = false;
                gridView1.Columns["userLieferungSchiffSoll"].Visible = false;
                gridView1.Columns["userBestellFreigabe"].Visible = false;
                gridView1.Columns["userWareneingang"].Visible = false;
                gridView1.Columns["Fitting-No"].Visible = false;
            }
            catch (Exception e)
            {

            }
        }

        public Boolean updateGridView1(int row, int column)
        {
            try
            {
                if (column != -1)
                {

                    if (gridView1.Columns[column].Name == "Virtuelle Pack Nr.")
                    {
                        //Update TOTAL_MaterialDetail
                        sqlDataAdapter1a.Update(dataTable1);
                    }
                    else 
                    {
                        //Update MaterialDetailExtended
                        sqlDataAdapter1.Update(dataTable1);
                    }
                }
                else
                {
                    //Update MaterialDetailExtended aus dem Code heraus
                    sqlDataAdapter1.Update(dataTable1);
                }

                return true;
            }
            catch (DBConcurrencyException e)
            {
                if (isPaste)
                {
                    countPasteError++;
                }
                else
                {
                    if (MessageBox.Show("Der Datensatz wurde in der Zwischenzeit auf dem Server bearbeitet. Die Datensätze werden neu geladen.", "Fehler", MessageBoxButtons.OK) == DialogResult.OK)
                    {
                        parent.reloadAllData();
                    }
                }

                sql.log("FEHLER", e, this.ToString() + ":" + System.Reflection.MethodBase.GetCurrentMethod().Name);
                return false;
            }
        }

        private void gridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                ContextMenu m = new ContextMenu();

                MenuItem copy = new MenuItem("Copy");
                copy.Click += new System.EventHandler(this.copy1_Click);
                m.MenuItems.Add(copy);

                MenuItem paste = new MenuItem("Paste");
                paste.Click += new System.EventHandler(this.paste1_Click);
                m.MenuItems.Add(paste);

                MenuItem delete = new MenuItem("Delete");
                delete.Click += new System.EventHandler(this.delete1_Click);
                m.MenuItems.Add(delete);

                if(gridView1.Columns[e.ColumnIndex].Name == "Soll Bereitstellung HH")
                {
                    int count = 0;
                    for (int a = 0; a < gridView1.SelectedCells.Count; a++)
                    {
                        if (gridView1["Kommissioniert", gridView1.SelectedCells[a].RowIndex].Value.ToString() == "True") count++;
                    }

                    if (count == gridView1.SelectedCells.Count)
                    {
                        MenuItem komm = new MenuItem("Kommissionierung aufheben");
                        komm.Click += new System.EventHandler(this.komm1_Click);
                        m.MenuItems.Add(komm);
                    }
                }

                var relativeMousePosition = gridView1.PointToClient(Cursor.Position);
                m.Show(gridView1, relativeMousePosition);
            }
            //else if (e.Button == MouseButtons.Left && gridView1.Columns[e.ColumnIndex].Name == "Soll Bereitstellung HH" && gridView1["Kommissioniert",e.RowIndex].Value.ToString() == "True")
            //{
            //    if (MessageBox.Show("Dieser Artikel ist bereits Kommissioniert. Es kann daher die Spalte \"Soll Bereitstellung HH\" nicht mehr bearbeitet werden. Soll der Status \"Kommissioniert\" für diesen Artikel zurückgesetzt werden?", "Bestätigung", MessageBoxButtons.YesNo) == DialogResult.Yes)
            //    {
            //        gridView1["Kommissioniert", e.RowIndex].Value = false;
            //        gridView1[e.ColumnIndex, e.RowIndex].ReadOnly = false;
            //        gridView1_CellEndEdit(null, null);
            //    }
            //}
        }

        private void gridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //Hier werden die Daten der editierten Zelle wieder in die Datenbank geschrieben
            gridView1.BindingContext[gridView1.DataSource].EndCurrentEdit();

            if (e == null) updateGridView1(-1, -1); else updateGridView1(e.RowIndex, e.ColumnIndex);
            //updateGridView1();
        }

        private void gridView1_CellParsing(object sender, DataGridViewCellParsingEventArgs e)
        {

            if (gridView1.CurrentCell.OwningColumn.ValueType == typeof(DateTime))
            {
                DateTime dResult;
                if (DateTime.TryParse(e.Value.ToString(), out dResult))
                {
                    gridView1.CurrentCell.Value = dResult;
                }
                else
                {
                    //e.Value = "";
                    //dataGridView1.CancelEdit();
                    gridView1.CurrentCell.Value = DBNull.Value;
                    e.ParsingApplied = true;
                }
            }
        }

        private void gridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex != -1)
            {
                DataGridViewColumn col = gridView1.Columns[e.ColumnIndex];

                //Spalte Kommissioniert einfärben
                if (col.Name == "Kommissioniert" && (e.CellStyle.BackColor != helper.getColors()[2] || e.CellStyle.BackColor != helper.getColors()[5]))
                {
                    if (e.Value.ToString() == "True")
                    {
                        e.CellStyle.BackColor = helper.getColors()[5];
                    }
                    else
                    {
                        e.CellStyle.BackColor = helper.getColors()[2];
                    }
                }

                //Soll Bereitstellung HH = ReadOnly wenn Kommissioniert = true
                if (col.Name == "Soll Bereitstellung HH" && gridView1["Kommissioniert", e.RowIndex].Value.ToString() == "True")
                {
                    gridView1[e.ColumnIndex, e.RowIndex].ReadOnly = true;
                    gridView1[e.ColumnIndex, e.RowIndex].ToolTipText = "Dieser Artikel ist bereits Kommissioniert. Es kann\r\ndaher die Spalte \"Soll Bereitstellung HH\" nicht\r\nmehr bearbeitet werden.\r\n\r\nInfo: Per Rechtsklick auf diese Zelle\r\nkann der Status zurückgesetzt werden.";
                }

                //Fertigungsauftrag nur, wenn Spalte "istBestellt" auf True
                if (col.Name == "Fertigungsauftrag" && gridView1["bestellFreigabe", e.RowIndex].Value.ToString() == "")
                {
                    gridView1[e.ColumnIndex, e.RowIndex].ReadOnly = true;
                    gridView1[e.ColumnIndex, e.RowIndex].ToolTipText = "Dieser Artikel kann nicht in einen Fertigungsauftrag übernommen werden, da er noch nicht bestellt worden ist.";
                }

                //Blaue Zellen
                if (col.Name == "Manufacturer" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Model" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Venue" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Positions_ID" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "JLM" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Zoll" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Status" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "bestellFreigabe" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "IstBestellt" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "PpU" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Installationsstatus" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userBestellung" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userbestaetigterLiefertermin" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userWareLieferSollHH" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userWareLieferIstHH" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userlieferungWerftIst" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userLieferungSchiffSoll" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userBestellFreigabe" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "userWareneingang" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];

                //Orangefarbene Zellen
                if (col.Name == "Bestelltermin" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "bestaetigterLiefertermin" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "Liefertermin an Werft" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "Lieferschein" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "laufende Nummer Auftrag" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "Auftragsjahr" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "Auftragsnummer" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "Kostenstelle MW" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];
                if (col.Name == "Bedarf MW" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];

                //Grüne Zellen
                if (col.Name == "Wareneingang ASC" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];
                if (col.Name == "Ist Bereitstellung HH" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];
                if (col.Name == "Packstück" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];
                if (col.Name == "Versandart" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];
                if (col.Name == "Empfänger Werft" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];
                if (col.Name == "Lagerort" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];

                //Rosa Zellen
                if (col.Name == "Technische_Ausprägung_1" && col.DefaultCellStyle.BackColor != helper.getColors()[3]) col.DefaultCellStyle.BackColor = helper.getColors()[3];
                if (col.Name == "Technische_Ausprägung_2" && col.DefaultCellStyle.BackColor != helper.getColors()[3]) col.DefaultCellStyle.BackColor = helper.getColors()[3];
                if (col.Name == "Technische_Ausprägung_3" && col.DefaultCellStyle.BackColor != helper.getColors()[3]) col.DefaultCellStyle.BackColor = helper.getColors()[3];
                
                //Türkise Zellen
                if (col.Name == "Soll Bereitstellung HH" && col.DefaultCellStyle.BackColor != helper.getColors()[4]) col.DefaultCellStyle.BackColor = helper.getColors()[4];
                if (col.Name == "Soll Bereitstellung Schiff" && col.DefaultCellStyle.BackColor != helper.getColors()[4]) col.DefaultCellStyle.BackColor = helper.getColors()[4];
                if (col.Name == "Virtuelle Pack Nr." && col.DefaultCellStyle.BackColor != helper.getColors()[4]) col.DefaultCellStyle.BackColor = helper.getColors()[4];
            }
        }

        private void gridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            //Dafür sorgen, dass Comboboxspalten sich sofort öffnen
            if (e.ColumnIndex == gridView1.Columns["Versandart"].Index && e.RowIndex >= 0 && e.RowIndex <= gridView1.Rows.Count)
            {
                gridView1.CurrentCell = gridView1[e.ColumnIndex, e.RowIndex];
                gridView1.BeginEdit(false);
                ComboBox comboBox = gridView1.EditingControl as ComboBox;
                if (comboBox != null)
                {
                    comboBox.DroppedDown = true;
                }
            }

            if (e.ColumnIndex == gridView1.Columns["Lagerort"].Index && e.RowIndex >= 0 && e.RowIndex <= gridView1.Rows.Count)
            {
                gridView1.CurrentCell = gridView1[e.ColumnIndex, e.RowIndex];
                gridView1.BeginEdit(false);
                ComboBox comboBox = gridView1.EditingControl as ComboBox;
                if (comboBox != null)
                {
                    comboBox.DroppedDown = true;
                }
            }
        }

        private void gridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                if (e.RowIndex != -1 && e.ColumnIndex != -1)
                {
                    gridView1.CurrentCell = gridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                }
                else
                {
                    gridView1.ClearSelection();
                }
            }
        }

        private void gridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            //Datumsspalten überprüfen
            string ColName = gridView1.Columns[e.ColumnIndex].Name;
            if (ColName.Equals("bestellFreigabe") || ColName.Equals("bestaetigterLiefertermin") || ColName.Equals("Bestelltermin") || ColName.Equals("Wareneingang ASC") || ColName.Equals("Soll Bereitstellung HH") || ColName.Equals("Ist Bereitstellung HH") || ColName.Equals("Liefertermin an Werft") || ColName.Equals("Soll Bereitstellung Schiff"))
            {
                if (string.IsNullOrEmpty(e.FormattedValue.ToString())) return;
                if (!helper.IsDateExact(e.FormattedValue.ToString()))
                {
                    MessageBox.Show("Bitte geben Sie ein korrektes Datum ein.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    e.Cancel = true;
                    return;
                }
            }

            //Behndlung Sperrdatum für Soll Bereitstellung HH
            //Altes Datum stetzen
            String altesDatum = "";
            if (ColName.Equals("Soll Bereitstellung HH")) { if (gridView1[e.ColumnIndex, e.RowIndex].Value.ToString() != "") altesDatum = gridView1[e.ColumnIndex, e.RowIndex].Value.ToString().Substring(0, 10); }

            if (ColName.Equals("Soll Bereitstellung HH") && Login.user != "Hüttmann, Olaf" && e.FormattedValue.ToString() != altesDatum)
            {
                //Sperrdatum erneut auslesen
                parent.readLock_SollBereitstellungHH();

                DateTime sperrDatum = DateTime.ParseExact(parent.getDatetimePicker_Sperre().Text, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);
                DateTime zuSchreibendesDatum = DateTime.ParseExact(e.FormattedValue.ToString(), "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);

                int result = DateTime.Compare(zuSchreibendesDatum,sperrDatum);
                if (result <= 0)
                {
                    MessageBox.Show("Das zu schreibende Datum '" + e.FormattedValue.ToString() + "' fällt in den Sperrbereichszeitraum für diese Spalte und kann nicht geschrieben werden (siehe unten, \"Sperre für Änderungen an 'Soll Bereitstellung HH' bis einschließlich\"). Bitte geben Sie ein anderes Datum ein.", "Fehler");
                    e.Cancel = true;
                }
            }
        }

        public DataTable getTable1()
        {
            return dataTable1;
        }

        private void copy1_Click(object sender, EventArgs e)
        {
            try
            {
                if (gridView1.SelectedCells.Count == 1 && gridView1.SelectedCells[0].Value.ToString() != "")
                {
                    Clipboard.SetText(gridView1.SelectedCells[0].Value.ToString());
                }
                else if (gridView1.SelectedCells.Count == 1)
                {
                    if (gridView1.SelectedCells[0].OwningColumn.CellType == typeof(DataGridViewComboBoxCell))
                    {
                        if (gridView1.SelectedCells[0].Value.ToString() != "")
                        {
                            Clipboard.SetText(gridView1.SelectedCells[0].Value.ToString());
                        }
                        else
                        {
                            Clipboard.Clear();
                        }
                    }
                    else
                    {
                        Clipboard.Clear();
                    }
                }
                else
                {
                    Clipboard.Clear();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Copy to Clipboard war nicht erfolgreich. Bitte versuchen Sie es erneut.", "Fehler");
            }
        }

        private void paste1_Click(object sender, EventArgs e)
        {
            //Für Korrekte Behandlung der DBConcurrencyException
            isPaste = true;

            List<int> pasteZeilen = new List<int> { };
            string pasteColumn = "";
            if (gridView1.SelectedCells.Count != 0) pasteColumn = gridView1.SelectedCells[0].OwningColumn.Name;

            for (int i = 0; i < gridView1.SelectedCells.Count; i++)
            {
                pasteZeilen.Add(gridView1.SelectedCells[i].OwningRow.Index);
            }

            if (Clipboard.GetText() != "")
            {
                for (int i = 0; i < pasteZeilen.Count; i++)
                {
                    if (!gridView1.SelectedCells[i].OwningColumn.ReadOnly)
                    {
                        try
                        {
                            if (pasteColumn == "bestellFreigabe" || pasteColumn == "Bestelltermin" || pasteColumn == "bestaetigterLiefertermin" || pasteColumn == "Wareneingang ASC" || pasteColumn == "Soll Bereitstellung HH" || pasteColumn == "Ist Bereitstellung HH" || pasteColumn == "Liefertermin an Werft" || pasteColumn == "Soll Bereitstellung Schiff")
                            {

                                if (!helper.IsDateExact(Clipboard.GetText()))
                                {
                                    MessageBox.Show("Der zu kopierende Text ist kein gültiges DateTime-Format. Keine Zeile wurde aktualisiert.", "Fehler");
                                    return;
                                }
                                else
                                {
                                    //Behandlung Sperrdatum für Soll Bereitstellung HH
                                    //Altes Datum stetzen
                                    String altesDatum = "";
                                    if (pasteColumn == "Soll Bereitstellung HH") { if (gridView1.Rows[pasteZeilen[i]].Cells[pasteColumn].Value.ToString() != "") altesDatum = gridView1.Rows[pasteZeilen[i]].Cells[pasteColumn].Value.ToString().Substring(0, 10); }

                                    if (pasteColumn == "Soll Bereitstellung HH" && Login.user != "Hüttmann, Olaf" && Clipboard.GetText().Substring(0, 10) != altesDatum)
                                    {
                                        //Sperrdatum erneut auslesen
                                        parent.readLock_SollBereitstellungHH();

                                        DateTime sperrDatum = DateTime.ParseExact(parent.getDatetimePicker_Sperre().Text, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);
                                        DateTime zuSchreibendesDatum = DateTime.ParseExact(Clipboard.GetText().Substring(0, 10), "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);

                                        int result = DateTime.Compare(zuSchreibendesDatum, sperrDatum);
                                        if (result <= 0)
                                        {
                                            MessageBox.Show("Das zu schreibende Datum '" + Clipboard.GetText().Substring(0, 10) + "' fällt in den Sperrbereichszeitraum für diese Spalte und kann nicht geschrieben werden (siehe unten, \"Sperre für Änderungen an 'Soll Bereitstellung HH' bis einschließlich\"). Bitte geben Sie ein anderes Datum ein.", "Fehler");
                                            return;
                                        }
                                    }
                                }
                            }

                            gridView1.Rows[pasteZeilen[i]].Cells[pasteColumn].Value = Clipboard.GetText();
                            updateUserColumn();

                            // Zeile zurück in die DB schreiben
                            gridView1_CellEndEdit(null, null);
                        }
                        catch (Exception ex)
                        {

                        }
                    }
                }
                if(countPasteError > 0)
                {
                    if (MessageBox.Show("Der Datensatz wurde in der Zwischenzeit auf dem Server bearbeitet. Es wurden nur die Datensätze aktualisiert, die nicht im Hintergrund bearbeitet wurden. Alle Datensätze werden nun neu geladen.", "Fehler", MessageBoxButtons.OK) == DialogResult.OK)
                    {
                        parent.reloadAllData();
                    }
                }
            }
            countPasteError = 0;
            isPaste = false;
        }

        private void komm1_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Soll der Status \"Kommissioniert\" für diese Artikel wirklich aufgehoben werden?", "Bestätigung", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                //Für Korrekte Behandlung der DBConcurrencyException
                isPaste = true;

                List<int> pasteZeilen = new List<int> { };
                string pasteColumn = "";
                if (gridView1.SelectedCells.Count != 0) pasteColumn = gridView1.SelectedCells[0].OwningColumn.Name;

                for (int i = 0; i < gridView1.SelectedCells.Count; i++)
                {
                    pasteZeilen.Add(gridView1.SelectedCells[i].OwningRow.Index);
                }

                for (int i = 0; i < pasteZeilen.Count; i++)
                {
                    try
                    {
                        gridView1.Rows[pasteZeilen[i]].Cells["Kommissioniert"].Value = false;
                        gridView1.Rows[pasteZeilen[i]].Cells["Soll Bereitstellung HH"].ReadOnly = false;
                        gridView1.Rows[pasteZeilen[i]].Cells["Soll Bereitstellung HH"].ToolTipText = "";
                        updateUserColumn();

                        // Zeile zurück in die DB schreiben
                        gridView1_CellEndEdit(null, null);
                    }
                    catch (Exception ex)
                    {

                    }
                }
                if (countPasteError > 0)
                {
                    if (MessageBox.Show("Der Datensatz wurde in der Zwischenzeit auf dem Server bearbeitet. Es wurden nur die Datensätze aktualisiert, die nicht im Hintergrund bearbeitet wurden. Alle Datensätze werden nun neu geladen.", "Fehler", MessageBoxButtons.OK) == DialogResult.OK)
                    {
                        parent.reloadAllData();
                    }
                }

                countPasteError = 0;
                isPaste = false;
            }
        }

        private void delete1_Click(object sender, EventArgs e)
        {
            //Für Korrekte Behandlung der DBConcurrencyException
            isPaste = true;

            List<int> deleteZeilen = new List<int> { };
            string deleteColumn = "";
            if (gridView1.SelectedCells.Count != 0) deleteColumn = gridView1.SelectedCells[0].OwningColumn.Name;

            for (int i = 0; i < gridView1.SelectedCells.Count; i++)
            {
                deleteZeilen.Add(gridView1.SelectedCells[i].OwningRow.Index);
            }

            if (gridView1.SelectedCells.Count != 0)
            {
                for (int i = 0; i < gridView1.SelectedCells.Count; i++)
                {
                    if (!gridView1.SelectedCells[i].OwningColumn.ReadOnly)
                    {
                        try
                        {
                            if (gridView1.SelectedCells[i].ValueType == typeof(System.DateTime)) gridView1.SelectedCells[i].Value = DBNull.Value;
                            if (gridView1.SelectedCells[i].ValueType == typeof(int)) gridView1.SelectedCells[i].Value = 0;
                            if (gridView1.SelectedCells[i].ValueType == typeof(string)) gridView1.SelectedCells[i].Value = String.Empty;
                            if (gridView1.SelectedCells[i].ValueType == typeof(Boolean)) gridView1.SelectedCells[i].Value = Boolean.FalseString;

                            if (gridView1.SelectedCells[i].ValueType == typeof(System.DateTime) || gridView1.SelectedCells[i].ValueType == typeof(int) || gridView1.SelectedCells[i].ValueType == typeof(string) || gridView1.SelectedCells[i].ValueType == typeof(Boolean))
                            {
                                updateUserColumn();

                                // Zeile zurück in die DB schreiben
                                gridView1_CellEndEdit(null, null);
                            }
                        }
                        catch (Exception ex)
                        {

                        }
                    }
                }

                if (countPasteError > 0)
                {
                    if (MessageBox.Show("Der Datensatz wurde in der Zwischenzeit auf dem Server bearbeitet. Es wurden nur die Datensätze aktualisiert, die nicht im Hintergrund bearbeitet wurden. Alle Datensätze werden nun neu geladen.", "Fehler", MessageBoxButtons.OK) == DialogResult.OK)
                    {
                        parent.reloadAllData();
                    }
                }
            }

            countPasteError = 0;
            isPaste = false;
        }

        private void updateUserColumn()
        {
            String userTimestamp = Login.user + " - " + System.DateTime.Now;

            // Das entsprechende Userfeld füllen
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["bestellFreigabe"].Index) gridView1.CurrentRow.Cells["userbestellFreigabe"].Value = (userTimestamp);
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["Bestelltermin"].Index) gridView1.CurrentRow.Cells["userbestellung"].Value = (userTimestamp);
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["bestaetigterLiefertermin"].Index) gridView1.CurrentRow.Cells["userbestaetigterLiefertermin"].Value = (userTimestamp);
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["Wareneingang ASC"].Index) gridView1.CurrentRow.Cells["userwareneingang"].Value = (userTimestamp);
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["Soll Bereitstellung HH"].Index) gridView1.CurrentRow.Cells["userwareLieferSollHH"].Value = (userTimestamp);
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["Ist Bereitstellung HH"].Index) gridView1.CurrentRow.Cells["userwareLieferIstHH"].Value = (userTimestamp);
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["Liefertermin an Werft"].Index) gridView1.CurrentRow.Cells["userlieferungWerftIst"].Value = (userTimestamp);
            if (gridView1.CurrentCell.ColumnIndex == gridView1.Columns["Soll Bereitstellung Schiff"].Index) gridView1.CurrentRow.Cells["userlieferungSchiffSoll"].Value = (userTimestamp);
        }
        #endregion

        #region Methoden für gridView2 (Kai Export)
        public void getData2()
        {
            try
            {
                gridView2.DataSource = bindingSource2;

                sqlDataAdapter2 = new SqlDataAdapter(select2, Login.connection);

                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(sqlDataAdapter2);

                // Populate a new data table and bind it to the BindingSource.
                dataTable2 = new DataTable();
                dataTable2.Locale = System.Globalization.CultureInfo.InvariantCulture;
                sqlDataAdapter2.Fill(dataTable2);
                bindingSource2.DataSource = dataTable2;

                gridView2.AutoGenerateColumns = false;
            }
            catch (Exception e)
            {
                sql.log("FEHLER", e, this.ToString() + ":" + System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
        }

        public DataTable getTable2()
        {
            return dataTable2;
        }
        #endregion

        #region Methoden für gridView3 (Lager Export)
        public void getData3()
        {
            try
            {
                gridView3.DataSource = bindingSource3;

                sqlDataAdapter3 = new SqlDataAdapter(select3, Login.connection);

                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(sqlDataAdapter3);

                // Populate a new data table and bind it to the BindingSource.
                dataTable3 = new DataTable();
                dataTable3.Locale = System.Globalization.CultureInfo.InvariantCulture;
                sqlDataAdapter3.Fill(dataTable3);
                bindingSource3.DataSource = dataTable3;

                gridView3.AutoGenerateColumns = false;

            }
            catch (Exception e)
            {
                sql.log("FEHLER", e, this.ToString() + ":" + System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
        }

        public DataTable getTable3()
        {
            return dataTable3;
        }
        #endregion

        #region Methoden für gridView4 (Summe Schiff)
        public void getData4()
        {
            try
            {
                gridView4.DataSource = bindingSource4;

                sqlDataAdapter4 = new SqlDataAdapter(select4, Login.connection);

                SqlCommandBuilder commandBuilder = new SqlCommandBuilder(sqlDataAdapter4);

                // Populate a new data table and bind it to the BindingSource.
                dataTable4 = new DataTable();
                dataTable4.Locale = System.Globalization.CultureInfo.InvariantCulture;
                sqlDataAdapter4.Fill(dataTable4);
                bindingSource4.DataSource = dataTable4;

                //gridView4.AutoGenerateColumns = false;

                //Eventhandler setzen
                gridView4.CellFormatting -= new DataGridViewCellFormattingEventHandler(this.gridView4_CellFormatting);

                gridView4.CellFormatting += new DataGridViewCellFormattingEventHandler(this.gridView4_CellFormatting);

            }
            catch (Exception e)
            {
                sql.log("FEHLER", e, this.ToString() + ":" + System.Reflection.MethodBase.GetCurrentMethod().Name);
            }
        }

        private void gridView4_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex != -1)
            {
                DataGridViewColumn col = gridView4.Columns[e.ColumnIndex];

                //Blaue Zellen
                if (col.Name == "Manufacturer" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Model" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Description" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "QTY new" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Yard_Approval" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Bestellfreigabe" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Bestellt" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "Veredelung" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];
                if (col.Name == "IstVeredelt" && col.DefaultCellStyle.BackColor != helper.getColors()[0]) col.DefaultCellStyle.BackColor = helper.getColors()[0];

                //Orangefarbene Zellen
                if (col.Name == "LieferterminWerft" && col.DefaultCellStyle.BackColor != helper.getColors()[1]) col.DefaultCellStyle.BackColor = helper.getColors()[1];

                //Grüne Zellen
                if (col.Name == "Wareneingang" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];
                if (col.Name == "IstBereitstellung" && col.DefaultCellStyle.BackColor != helper.getColors()[2]) col.DefaultCellStyle.BackColor = helper.getColors()[2];

                //Türkise Zellen
                if (col.Name == "SollBereitstellung" && col.DefaultCellStyle.BackColor != helper.getColors()[4]) col.DefaultCellStyle.BackColor = helper.getColors()[4];
                if (col.Name == "SollBereitstellungSchiff" && col.DefaultCellStyle.BackColor != helper.getColors()[4]) col.DefaultCellStyle.BackColor = helper.getColors()[4];
            }
        }

        public DataTable getTable4()
        {
            return dataTable4;
        }
        #endregion

        #region SQL-Befehle als Strings
        private void populateSQLStrings()
        {
            select1 = "SELECT Kommissioniert, Manufacturer, Model, Venue, Positions_ID, JLM, Zoll, materialStatus AS [Status], istVeredelungsArtikel AS [Veredelung], veredelungsSchritt, istVeredelt, remarks AS [Anmerkungen], bestellFreigabe, IstBestellt, userBestellFreigabe, "
            + "bestellung AS [Bestelltermin], userBestellung, bestaetigterLiefertermin, userbestaetigterLiefertermin, wareneingang AS [Wareneingang ASC], userWareneingang, "
            + "wareLieferSollHH AS [Soll Bereitstellung HH], userWareLieferSollHH, wareLieferIstHH AS [Ist Bereitstellung HH], userWareLieferIstHH, lieferungWerftIst AS [Liefertermin an Werft], userlieferungWerftIst, "
            + "lieferungSchiffSoll AS [Soll Bereitstellung Schiff], userLieferungSchiffSoll, versandArtWerft AS [Versandart], [Virtuelle Pack Nr.], packstueck AS [Packstück], empfangsStelleWerft AS [Empfänger Werft], lagerOrtWerft AS [Lagerort], lieferscheinNummer AS [Lieferschein], laufendeNummerAuftrag AS [laufende Nummer Auftrag], "
            + "auftragsJahr AS [Auftragsjahr], auftragsNummer AS [Auftragsnummer], kostenStelleMW AS [Kostenstelle MW], bedarfMW AS [Bedarf MW], PpU, deviceInstalled AS [Installationsstatus], "
            + "Technische_Ausprägung_1, Technische_Ausprägung_2, Technische_Ausprägung_3, ID_MaterialDetailExtended, ID_MaterialDetail, [Fitting-No] "
            + "FROM vw_comm_Lieferkette";

            update1 = "UPDATE vw_comm_Lieferkette "
            + "SET materialStatus = @materialStatus, bestellFreigabe = @bestellFreigabe, userBestellFreigabe = @userBestellFreigabe, bestellung = @bestellung, "
                + "userBestellung = @userBestellung, bestaetigterLiefertermin = @bestaetigterLiefertermin, userbestaetigterLiefertermin = @userbestaetigterLiefertermin, "
                + "wareneingang = @wareneingang, userWareneingang = @userWareneingang, wareLieferSollHH = @wareLieferSollHH, "
                + "userWareLieferSollHH = @userWareLieferSollHH, wareLieferIstHH = @wareLieferIstHH, userWareLieferIstHH = @userWareLieferIstHH, "
                + "lieferungWerftIst = @lieferungWerftIst, userlieferungWerftIst = @userlieferungWerftIst, lieferungSchiffSoll = @lieferungSchiffSoll, "
                + "userLieferungSchiffSoll = @userLieferungSchiffSoll, versandArtWerft = @versandArtWerft, packstueck = @packstueck, lieferscheinNummer = @lieferscheinNummer, "
                + "laufendeNummerAuftrag = @laufendeNummerAuftrag, auftragsNummer = @auftragsNummer, remarks = @remarks, empfangsStelleWerft = @empfangsStelleWerft, "
                + "lagerOrtWerft = @lagerOrtWerft, auftragsJahr = @auftragsJahr, kostenStelleMW = @kostenStelleMW, bedarfMW = @bedarfMW, "
                + "istVeredelungsArtikel = @istVeredelungsArtikel, istVeredelt = @istVeredelt, veredelungsSchritt = @veredelungsSchritt, IstBestellt = @istBestellt, Kommissioniert = @Kommissioniert "
            + "WHERE (ID_MaterialDetailExtended = @ID_MaterialDetailExtended) "
                + "AND (@IsNull_materialStatus = 1 AND materialStatus IS NULL OR materialStatus = @Original_materialStatus) "
                + "AND (@IsNull_bestellFreigabe = 1 AND bestellFreigabe IS NULL OR bestellFreigabe = @Original_bestellFreigabe) "
                + "AND (@IsNull_userBestellFreigabe = 1 AND userBestellFreigabe IS NULL OR userBestellFreigabe = @Original_userBestellFreigabe) "
                + "AND (@IsNull_bestellung = 1 AND bestellung IS NULL OR bestellung = @Original_bestellung) "
                + "AND (@IsNull_userBestellung = 1 AND userBestellung IS NULL OR userBestellung = @Original_userBestellung) "
                + "AND (@IsNull_bestaetigterLiefertermin = 1 AND bestaetigterLiefertermin IS NULL OR bestaetigterLiefertermin = @Original_bestaetigterLiefertermin) "
                + "AND (@IsNull_userbestaetigterLiefertermin = 1 AND userbestaetigterLiefertermin IS NULL OR userbestaetigterLiefertermin = @Original_userbestaetigterLiefertermin) "
                + "AND (@IsNull_wareneingang = 1 AND wareneingang IS NULL OR wareneingang = @Original_wareneingang) "
                + "AND (@IsNull_userWareneingang = 1 AND userWareneingang IS NULL OR userWareneingang = @Original_userWareneingang) "
                + "AND (@IsNull_wareLieferSollHH = 1 AND wareLieferSollHH IS NULL OR wareLieferSollHH = @Original_wareLieferSollHH) "
                + "AND (@IsNull_userWareLieferSollHH = 1 AND userWareLieferSollHH IS NULL OR userWareLieferSollHH = @Original_userWareLieferSollHH) "
                + "AND (@IsNull_wareLieferIstHH = 1 AND wareLieferIstHH IS NULL OR wareLieferIstHH = @Original_wareLieferIstHH) "
                + "AND (@IsNull_userWareLieferIstHH = 1 AND userWareLieferIstHH IS NULL OR userWareLieferIstHH = @Original_userWareLieferIstHH) "
                + "AND (@IsNull_lieferungWerftIst = 1 AND lieferungWerftIst IS NULL OR lieferungWerftIst = @Original_lieferungWerftIst) "
                + "AND (@IsNull_userlieferungWerftIst = 1 AND userlieferungWerftIst IS NULL OR userlieferungWerftIst = @Original_userlieferungWerftIst) "
                + "AND (@IsNull_lieferungSchiffSoll = 1 AND lieferungSchiffSoll IS NULL OR lieferungSchiffSoll = @Original_lieferungSchiffSoll) "
                + "AND (@IsNull_userLieferungSchiffSoll = 1 AND userLieferungSchiffSoll IS NULL OR userLieferungSchiffSoll = @Original_userLieferungSchiffSoll) "
                + "AND (@IsNull_versandArtWerft = 1 AND versandArtWerft IS NULL OR versandArtWerft = @Original_versandArtWerft) "
                + "AND (@IsNull_empfangsStelleWerft = 1 AND empfangsStelleWerft IS NULL OR empfangsStelleWerft = @Original_empfangsStelleWerft) "
                + "AND (@IsNull_lagerOrtWerft = 1 AND lagerOrtWerft IS NULL OR lagerOrtWerft = @Original_lagerOrtWerft) "
                + "AND (@IsNull_packstueck = 1 AND packstueck IS NULL OR packstueck = @Original_packstueck) "
                + "AND (@IsNull_lieferscheinNummer = 1 AND lieferscheinNummer IS NULL OR lieferscheinNummer = @Original_lieferscheinNummer) "
                + "AND (@IsNull_laufendeNummerAuftrag = 1 AND laufendeNummerAuftrag IS NULL OR laufendeNummerAuftrag = @Original_laufendeNummerAuftrag) "
                + "AND (@IsNull_auftragsNummer = 1 AND auftragsNummer IS NULL OR auftragsNummer = @Original_auftragsNummer) "
                + "AND (@IsNull_auftragsJahr = 1 AND auftragsJahr IS NULL OR auftragsJahr = @Original_auftragsJahr) "
                + "AND (@IsNull_kostenStelleMW = 1 AND kostenStelleMW IS NULL OR kostenStelleMW = @Original_kostenStelleMW) "
                + "AND (@IsNull_bedarfMW = 1 AND bedarfMW IS NULL OR bedarfMW = @Original_bedarfMW) "
                + "AND (@IsNull_istVeredelungsArtikel = 1 AND istVeredelungsArtikel IS NULL OR istVeredelungsArtikel = @Original_istVeredelungsArtikel) "
                + "AND (@IsNull_istVeredelt = 1 AND istVeredelt IS NULL OR istVeredelt = @Original_istVeredelt) "
                + "AND (@IsNull_veredelungsSchritt = 1 AND veredelungsSchritt IS NULL OR veredelungsSchritt = @Original_veredelungsSchritt) "
                + "AND (@IsNull_IstBestellt = 1 AND IstBestellt IS NULL OR IstBestellt = @Original_IstBestellt) "
                + "AND (@IsNull_Kommissioniert = 1 AND Kommissioniert IS NULL OR Kommissioniert = @Original_Kommissioniert)";

            update1a = "UPDATE TOTAL_MaterialDetail SET [Virtuelle Pack Nr.] = @VirtuellePackNr WHERE (ID = @Original_ID_MaterialDetail) AND (@IsNull_VirtuellePackNr = 1 AND [Virtuelle Pack Nr.] IS NULL OR [Virtuelle Pack Nr.] = @Original_VirtuellePackNr)";

            select2 = "SELECT Ship, Sparte, Deck, FireZone, Expr1, Expr2, Menge, Model, Expr6, JLM, Liefertermin, Expr5, auftragsNummer, auftragsJahr, laufendeNummerAuftrag, Expr3, Expr4, lieferscheinNummer FROM vw_comm_Lieferkette_KaiExport";
            update2 = "";

            select3 = "SELECT JLM, [Productnumber ASC] AS [Art. Nr.], NULL AS [Pos. Nr.], Model, Lieferschein, Menge, Packstück, Auftragsnummer, Bedarfsnummer, Baugruppe, Liefertermin, Lieferant, [laufende Nummer], Expr3 FROM vw_LagerExport";
            update3 = "";

            select4 = "SELECT Manufacturer, Model, [Description], [QTY new], Yard_Approval, Bestellfreigabe, Bestellt, Wareneingang, Veredelung, IstVeredelt, SollBereitstellung, IstBereitstellung, SollBereitstellungSchiff, LieferterminWerft FROM vw_comm_Lieferkette_SummeSchiff";
            update4 = "";

        }
        #endregion

    }
}
